//
//  HZHomeViewController.swift
//  HansWeibo
//
//  Created by Hans on 16/8/9.
//  Copyright © 2016年 Hans. All rights reserved.
//

import UIKit
// cell可重用标识
private let HZHomeViewCellID = "HZHomeViewCellID"

class HZHomeViewController: HZBasisViewController {

    // 刷新对象
    let refresh = HZRefreshControl()

    
    // 创建一个ViewModel
    private var homeListViewModel: HZHomeListModel = HZHomeListModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        if !isLogin {
            basisView?.setupBasis(nil, title: nil)
            //如果未登录的话设置未登录信息和logo  也就没必要再加载数据了  所以return
            return
        }
        
        setupTableViewInfo()
       
        // 请求数据
        loadData()
        
    }
    
    // MARK - 设置tableView的相关属性
    func setupTableViewInfo(){
        
        // 注册cell
        tableView.registerClass(HZHomeCell.self, forCellReuseIdentifier: HZHomeViewCellID)
        // 代理
        tableView.dataSource = self
        tableView.delegate = self
        // 设置高度(自动计算行高)(使用contentView的高度来得到cell 的高度)
        tableView.rowHeight = UITableViewAutomaticDimension
        // 设置预估行高
        tableView.estimatedRowHeight = 200
        // 设置footView
        tableView.tableFooterView = activityView
        
        
        // 刷新添加事件
        refresh.addTarget(self, action: #selector(HZHomeViewController.refreshAction), forControlEvents: UIControlEvents.ValueChanged)
        // 系统自带的刷新
        tableView.addSubview(refresh)
        tableView.separatorStyle = .None
        
        
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "backReload", name: "backReload", object: nil)
        
    }
    
    
    func backReload(){
        
        loadData()
        
    }
    
    func refreshAction(){
        loadData()
    }
    
    
    // 菊花
    private lazy var activityView: UIActivityIndicatorView = {
        let juhua = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
       juhua.color = AppTheneColor
        return juhua
    }()
    
    deinit{
        NSNotificationCenter.defaultCenter().removeObserver(self, name: "backReload", object: nil)
    }
}

// MARK - UITableViewDataSource
extension HZHomeViewController: UITableViewDataSource,UITableViewDelegate {
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // dataArray.count
        return homeListViewModel.dataArray.count
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(HZHomeViewCellID, forIndexPath: indexPath) as! HZHomeCell
        cell.homeViewModel = homeListViewModel.dataArray[indexPath.row]
        
        return cell
    }
    
    
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        // 如果是最后一个cell  而且没有动画
        if indexPath.row + 1 == homeListViewModel.dataArray.count && !activityView.isAnimating(){
            // 设置动画
            activityView.startAnimating()
            // 请求数据
            loadData()
        }
    }
    
}

// 请求数据
extension HZHomeViewController {
    func loadData(){
        // 为 ture 是上拉加载更多   false  加载更多
        homeListViewModel.loadData(activityView.isAnimating()) { (isSusses) in
            
            self.activityView.stopAnimating()
            self.refresh.endRefreshing()
            
            if !isSusses {
                // 请求数据失败
                return
            }
            // 请求数据成功
            // 刷新UI
            self.tableView.reloadData()
            self.tableView.setContentOffset(CGPointMake(0, 64), animated: true)
        }
        
    }
}

